//
// Description: 886. 求组合数 II
// Created by Loading on 2022/5/27.
//

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

constexpr int N = 1e5 + 10, MOD = 1e9 + 7;

/*
 * 组合数为 (a! / (b!(a - b)!)) % MOD，除法分子分母依次取模时，结果将不正确，故需要使用逆元求解
 * a! * (b!)^-1 * ((a - b)!)^-1 % MOD
 */

// 快速幂求逆元
int qmi(int a, int b) {
    int res = 1;
    while (b) {
        if (b & 1) {
            res = (LL) res * a % MOD;
        }
        a = (LL) a * a % MOD;
        b >>= 1;
    }

    return res;
}

int main() {
    // 阶乘数组，阶乘逆元数组
    int fact[N], infact[N];
    // 预处理
    fact[0] = infact[0] = 1;
    for (int i = 1; i < N; ++i) {
        fact[i] = (LL) fact[i - 1] * i % MOD;
        infact[i] = (LL) infact[i - 1] * qmi(i, MOD - 2) % MOD;
    }

    int n;
    cin >> n;
    while (n--) {
        int a, b;
        cin >> a >> b;
        // 注意两项相乘时需要及时取模，因为三项相乘结果会爆LL
        int res = (LL) fact[a] * infact[b] % MOD * infact[a - b] % MOD;

        cout << res << endl;
    }

    return 0;
}